#ifndef TARGET_H__
#define TARGET_H__

#include "measure.h"
#include "coords.h"
#include <vector>

namespace common
{
  class KalmanFilter;
  /**
   * \brief Класс "истинная цель"
   * 
   * Предполагается, что цель движется по линейной модели:
   * \f[
   * x_k = F x_{k-1} + v_k
   * \f]
   * Для предсказания ее положения используется фильтр Калмана
   */
  class Target
  {
    public:
      Target(void);
      Target(const Measure& a_measure);
      virtual ~Target(void);

      const RectCoords& getCoords() const;
      bool  checkSuitable(const Measure& a_measure) const;
      void  refreshCoords(const Measure& a_measure);

    private:
      KalmanFilter * m_pfilter;
  };
  typedef std::vector<Target> Targets;
};

#endif // TARGET_H__
